igo8.o gopal.o humminbird.o mapasia.o gnav_trl.o navitel.o ggv_ovl.o \
jtr.o sbp.o sbn.o mmo.o skyforce.o itracku.o v900.o delbin.o \
pocketfms_bc.o pocketfms_fp.o pocketfms_wp.o naviguide.o enigma.o \
- vpl.o teletype.o \
+ vpl.o teletype.o jogmap.o \
FMTS=@FMTS@
--- /dev/null
+/*
+
+ Support for XML files from jogmap.de
+
+ Copyright (C) 2009 Robert Lipe robertlipe@gpsbabel.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+*/
+
+#include "defs.h"
+#include "xmlgeneric.h"
+#include "jeeps/gpsmath.h"
+#include "garmin_tables.h"
+
+static route_head *trk;
+static gbfile *fout;
+
+static arglist_t jogmap_args[] =
+{
+ ARG_TERMINATOR
+};
+
+#define MYNAME "xol"
+
+#if ! HAVE_LIBEXPAT
+void
+jogmap_rd_init(const char *fname)
+{
+ fatal(MYNAME ": This build excluded \"" MYNAME "\" support because expat was not installed.\n");
+}
+
+void
+jogmap_read(void)
+{
+}
+
+#else
+
+static xg_callback jogmap_shape, xol_shape_end;
+static xg_callback jogmap_waypt, xol_overlay;
+
+#define XOL "/overlays/overlay"
+
+
+
+static void
+jogmap_markers(const char *args, const char **attrv)
+{
+ trk = route_head_alloc();
+ track_add_head(trk);
+}
+
+static void
+jogmap_marker(const char *args, const char **attrv)
+{
+ const char **avp = &attrv[0];
+ waypoint *wpt = waypt_new();
+
+ while (*avp) {
+ if (strcmp(avp[0], "lat") == 0) {
+ sscanf(avp[1], "%lf",
+ &wpt->latitude);
+ } else
+ if (strcmp(avp[0], "lng") == 0) {
+ sscanf(avp[1], "%lf",
+ &wpt->longitude);
+ }
+
+ avp+=2;
+ }
+
+ if (trk) track_add_wpt(trk, wpt);
+}
+
+static
+xg_tag_mapping jogmap_map[] = {
+ { jogmap_markers, cb_start, "/markers" },
+ { jogmap_marker, cb_start, "/markers/marker" },
+ { NULL, 0, NULL }
+};
+
+static void
+jogmap_rd_init(const char *fname)
+{
+ trk = NULL;
+ xml_init(fname, jogmap_map, NULL);
+}
+
+static void
+jogmap_read(void)
+{
+ xml_read();
+}
+
+#endif
+
+static void
+jogmap_rd_deinit(void)
+{
+ xml_deinit();
+}
+
+ff_vecs_t jogmap_vecs = {
+ ff_type_file,
+ { ff_cap_none, /* waypoints */
+ ff_cap_read, /* tracks */
+ ff_cap_none }, /* routes */
+ jogmap_rd_init,
+ NULL,
+ jogmap_rd_deinit,
+ NULL,
+ jogmap_read,
+ NULL,
+ NULL,
+ jogmap_args,
+ CET_CHARSET_UTF8, 0
+};
--- /dev/null
+<markers>
+<marker lat="52.52690083230202" lng="13.405251502990723" zoom="15"/>
+<marker lat="52.53277501350654" lng="13.408598899841309"/>
+<marker lat="52.5340802804082" lng="13.404607772827148"/>
+<marker lat="52.534967839739444" lng="13.404178619384766"/>
+<marker lat="52.53517667462188" lng="13.403406143188477"/>
+<marker lat="52.53943146906928" lng="13.400144577026367"/>
+<marker lat="52.545956426276234" lng="13.395509719848633"/>
+<marker lat="52.544677611082754" lng="13.390789031982422"/>
+<marker lat="52.54253746965676" lng="13.383021354675293"/>
+<marker lat="52.54358145411929" lng="13.38061809539795"/>
+<marker lat="52.54029281898408" lng="13.375682830810547"/>
+<marker lat="52.54000570422354" lng="13.370447158813477"/>
+<marker lat="52.537212762674194" lng="13.36559772491455"/>
+<marker lat="52.53580317330981" lng="13.363323211669922"/>
+<marker lat="52.52979885989202" lng="13.369073867797852"/>
+<marker lat="52.52671806739541" lng="13.370532989501953"/>
+<marker lat="52.521078090759545" lng="13.370747566223145"/>
+<marker lat="52.52081696319122" lng="13.379201889038086"/>
+<marker lat="52.519876891093546" lng="13.380017280578613"/>
+<marker lat="52.51969409696076" lng="13.380231857299805"/>
+<marker lat="52.5199813445422" lng="13.382506370544434"/>
+<marker lat="52.52060806001903" lng="13.384523391723633"/>
+<marker lat="52.52254037645868" lng="13.387742042541504"/>
+<marker lat="52.52280149378294" lng="13.391518592834473"/>
+<marker lat="52.5225926000477" lng="13.394179344177246"/>
+<marker lat="52.52220092161672" lng="13.396754264831543"/>
+<marker lat="52.5219136885478" lng="13.397870063781738"/>
+<marker lat="52.52133921677571" lng="13.400144577026367"/>
+<marker lat="52.52081696319122" lng="13.400959968566895"/>
+<marker lat="52.521469779201745" lng="13.402719497680664"/>
+<marker lat="52.52243592909437" lng="13.403663635253906"/>
+<marker lat="52.522905940278065" lng="13.403749465942383"/>
+<marker lat="52.52342816902858" lng="13.404994010925293"/>
+<marker lat="52.52353261403365" lng="13.406281471252441"/>
+<marker lat="52.523454280303135" lng="13.407225608825684"/>
+<marker lat="52.524759824241585" lng="13.40808391571045"/>
+<marker lat="52.528154056888766" lng="13.40954303741455"/>
+<marker lat="52.52867622324605" lng="13.409285545349121"/>
+<marker lat="52.52930281468008" lng="13.407397270202637"/>
+<marker lat="52.53126085529294" lng="13.408899307250977"/>
+</markers>
extern ff_vecs_t enigma_vecs;
extern ff_vecs_t vpl_vecs;
extern ff_vecs_t teletype_vecs;
+extern ff_vecs_t jogmap_vecs;
static
vecs_t vec_list[] = {
"SkyTraq Venus based loggers Binary File Format",
"bin"
},
+ {
+ &jogmap_vecs,
+ "jogmap",
+ "Jogmap.de XML format",
+ "xml"
+ },
#endif // MAXIMAL_ENABLED
{
NULL,
--- /dev/null
+<para>
+ This read-only format reads the XML marker files from <ulink url="http://jogmap.de"> as tracks. Each "markers" entry is a new track with each "marker" entry being a trackpoint.
+</para>